package com.ithrima.activiti.day05;

import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

import java.util.HashMap;

/**
 *  测试包含网关
 *    特点： 具有排他网关和并行网关的一些共同点
 *           可以设置流程变量，当流程变量取值成立时，此时若干个分支都可以成立
 *
 */
public class InclusiveGateWayTest04 {



    // 完成任务
    public static void main(String[] args) {
        //1. 得到processEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2. 得到TaskService对象
        TaskService taskService = processEngine.getTaskService();
        //3. 根据流程定义的key，负责人assignee来实现当前用户的任务列表的查询
        Task task = taskService.createTaskQuery()
                .processDefinitionKey("examine").taskAssignee("xiaowang").singleResult();
        //4. 执行任务
        taskService.complete(task.getId());
    }
    // 启动流程实例
//    public static void main(String[] args) {
//        //1. 得到processEngine对象
//        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//        //2. 得到RunService对象
//        RuntimeService runtimeService = processEngine.getRuntimeService();
//        //3. 创建流程对象
//       Integer userType = 2;
//        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
//        stringObjectHashMap.put("userType",userType);
//        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("examine",stringObjectHashMap);
//        //4. 输出实例相关的信息
//        System.out.println("流程部署的ID"+processInstance.getDeploymentId());
//        System.out.println("部署流程ID"+processInstance.getProcessDefinitionId());
//        System.out.println("流程实例的ID"+processInstance.getId());
//        System.out.println("活动的ID"+processInstance.getActivityId());
//    }


    // 部署流程定义
//    public static void main(String[] args) {
//        // 1 创建 processEngine对象
//        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//        //2  得到RepositoryServer 实例
//        RepositoryService repositoryService = processEngine.getRepositoryService();
//        //3.进行部署
//        Deployment deploy = repositoryService.createDeployment()
//                .addClasspathResource("diagram/day05/examine.bpmn")
//               // .addClasspathResource("diagram/hello.png")
//                .name("体检流程")  // 设置流程名称
//                .deploy();
//        //4 输出部署信息
//        System.out.println(deploy.toString());
//    }
}
